// 不是所有的路由都应该被访问
// 可以访问: 静态路由
// 通过身份权限判别: 动态路由(进行筛选)
import { constantRoutes, asyncRoutes } from '@/router'
const state = {
  routes: constantRoutes // 默认就有的静态路由的权限
}

const mutations = {
  // 更新路由的数据
  setRoutes(state, newRoutes) {
    // 登录 => 就要去获取新的路由, 把它和静态路由合并
    state.routes = [...constantRoutes, ...newRoutes]
  }
}

const actions = {
  filterRoutes({ commit }, menus) {
    // 此时, menus要和动态路由表匹配
    // 以menus为基准
    // asyncRoutes: [{name: ''},{name: ''}]
    const routes = []
    menus.forEach(key => {
      // key就是一个标识
      routes.push(...asyncRoutes.filter(item => item.name === key)) // 得到一个数组
    })

    commit('setRoutes', routes) // 提交左侧菜单
    // routes就是筛选之后的路由
    // 通过addRoutes方法将它添加到当前的路由表
    return routes // 上面输入路由
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
